class OrdenSalidaDetalle < ActiveRecord::Base
  belongs_to :orden_salida
  
  validates_presence_of :producto_id, :cantidad, :costo_unitario, :precio_ieps
  validates_presence_of :precio_publico
  validates_numericality_of :costo_unitario, :precio_ieps, :precio_publico, :cantidad
  
  before_save :actualizar_importes
  
  def importe
    cantidad * costo_unitario
  end
  
  def importe_ieps
    (costo_unitario + precio_ieps) * cantidad
  end
  
  def importe_publico
    cantidad * precio_publico
  end
  
  def cajas
    botellas_caja = Producto.find(producto_id).botellas_caja
    logger.debug "Producto #{producto_id}: #{botellas_caja}"
    
    cantidad.divmod(botellas_caja)[0]
  end
  
  def botellas
    botellas_caja = Producto.find(producto_id).botellas_caja
    logger.debug "Producto #{producto_id}: #{botellas_caja}"
    
    cantidad.divmod(botellas_caja)[1]
  end

  def actualizar_importes
    logger.debug "OrdenSalidaDetalles#actualizar_importes"
    
    producto = Producto.find(producto_id)
    
    self.costo_unitario = producto.costo_cuervo
    self.precio_publico = producto.precio_publico
    self.precio_ieps = producto.costo_cuervo + producto.ieps
    
    logger.debug "costo unitario: #{self.costo_unitario}, precio_publico: #{self.precio_publico}, precio_ieps: #{self.precio_ieps}"
  end
end
